package Java2Test.threadpool.threadpool2;

import Java2Test.threadpool.threadpool1.MyRunnable;

import java.util.concurrent.*;

public class MyThreadPoolDemo1 {
    public static void main(String[] args) {

        /*
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor
        (核心线程数量,最大线程数量,空闲线程最大存活时间,任务队列,创建线程工厂,任务的拒绝策略);

        参数一: 核心线程数量            不能小于0
        参数二: 最大线程数              不能小于等于0, 最大数量 >= 核心线程数量
        参数三: 空闲线程最大存活时间      不能小于0
        参数四: 时间单位                用TimeUnit指定
        参数五: 任务队列                不能为null
        参数六: 创建线程工厂            不能为null
        参数七: 任务的拒绝策略           不能为null
         */

        // 创建自定义线程池
        ThreadPoolExecutor pool = new ThreadPoolExecutor(
                3,// 核心线程数：线程池长期保持运行的线程数量
                6,// 最大线程数：线程池允许创建的最大线程数量
                60,// 空闲线程存活时间：超过核心线程数的空闲线程的存活时长
                TimeUnit.SECONDS,// 时间单位：存活时间的度量单位（秒）
                new ArrayBlockingQueue<>(3),// 任务队列：存储待执行任务的阻塞队列，容量为3
                Executors.defaultThreadFactory(), // 线程工厂：默认工厂用于创建线程
                new ThreadPoolExecutor.AbortPolicy() // 拒绝策略：任务提交失败时直接抛出异常
        );

    }
}
